!** Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
!** See https://llvm.org/LICENSE.txt for license information.
!** SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

!* Tests for runtime library MATMUL routines

program p
    use check_mod
    implicit none
    real(kind=16), dimension(10,11) :: arr1
    real(kind=16), dimension(11,12) :: arr2, arr7
    real(kind=16), dimension(10,12) :: arr3, arr8
    real(kind=16), dimension(12,15) :: arr4
    real(kind=16), dimension(21,23) :: arr5
    real(kind=16), dimension(5,6) :: arr6
    real(kind=16), dimension(3280) :: results, expect

    integer :: i, j, k
    results = -1.0_16
    do k = 1, 11
       do j = 1, 10
          if(mod(j, 2) .eq. 0) then
            arr1(j, k) = k * 1.0_16
          else
            arr1(j, k) = (11 - k) * 1.0_16
          endif
       end do

       do i = 1, 12
          if(mod(i, 2) .eq. 0) then
            arr2(k, i) = k * 1.0_16
          else
            arr2(k, i) = (11 - k) * 1.0_16
          endif
      end do
    end do

    data expect / &
  196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, &
  266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, &
  196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, &
  266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, &
  196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, &
  266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, &
  196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, &
  266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, &
  196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, &
  266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, &
  196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, &
  266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, &
  112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16,   0.0_16,   0.0_16, 266.0_16, 273.0_16, 266.0_16, &
  273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16,   0.0_16,   0.0_16, 196.0_16, &
  112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16,   0.0_16, &
    0.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, &
  273.0_16,   0.0_16,   0.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, &
  112.0_16, 196.0_16, 112.0_16,   0.0_16,   0.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, &
  273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16,   0.0_16,   0.0_16, 196.0_16, 112.0_16, 196.0_16, &
  112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16,   0.0_16,   0.0_16, 266.0_16, &
  273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16,   0.0_16, &
    0.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, &
  112.0_16,   0.0_16,   0.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, &
  273.0_16, 266.0_16, 273.0_16,   0.0_16,   0.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16, 196.0_16, &
  112.0_16, 196.0_16, 112.0_16, 196.0_16, 112.0_16,   0.0_16,   0.0_16, 266.0_16, 273.0_16, 266.0_16, &
  273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16, 266.0_16, 273.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16,   0.0_16,   0.0_16, 148.0_16, 160.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16,   0.0_16,   0.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
    0.0_16,   0.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  148.0_16, 160.0_16,   0.0_16,   0.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16,   0.0_16,   0.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16,   0.0_16,   0.0_16, 116.0_16,  60.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16,   0.0_16,   0.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
    0.0_16,   0.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  116.0_16,  60.0_16,   0.0_16,   0.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16,   0.0_16,   0.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16, &
  116.0_16,  60.0_16, 116.0_16,  60.0_16, 116.0_16,  60.0_16,   0.0_16,   0.0_16, 148.0_16, 160.0_16, &
  148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16, 148.0_16, 160.0_16,   0.0_16,   0.0_16, &
  196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, &
  112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, &
  266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, &
  273.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, &
  112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, &
  196.0_16,   0.0_16, 112.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, &
  266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, &
  273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 196.0_16,   0.0_16, &
  112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, &
  196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
  266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, &
  273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, &
  196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, &
  112.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, &
  273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, &
  266.0_16,   0.0_16, 273.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, &
  196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, &
  112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 266.0_16,   0.0_16, &
  273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, &
  266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
  196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, &
  112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, 196.0_16,   0.0_16, 112.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, &
  266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, 273.0_16,   0.0_16, 266.0_16,   0.0_16, &
  273.0_16,   0.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16, &
    0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16, &
    0.0_16,  60.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16, &
    0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16, &
    0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16, &
    0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16, &
    0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 148.0_16, &
    0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16, &
    0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16, &
    0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16, &
    0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16, &
    0.0_16, 160.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16, &
    0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16, &
    0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16, &
    0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16, &
    0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 116.0_16, &
    0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16, &
    0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16, &
    0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16, &
    0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16,   0.0_16,  60.0_16,   0.0_16, 116.0_16, &
    0.0_16,  60.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16, &
    0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16, 148.0_16,   0.0_16, 160.0_16, &
    0.0_16, 148.0_16,   0.0_16, 160.0_16,   0.0_16,   0.0_16, 385.0_16, 220.0_16, 385.0_16, 220.0_16, &
  385.0_16, 220.0_16, 506.0_16, 220.0_16, 506.0_16, 220.0_16, 385.0_16, 220.0_16, 385.0_16, 220.0_16, &
  385.0_16, 220.0_16, 506.0_16, 220.0_16, 506.0_16, 220.0_16, 385.0_16, 220.0_16, 385.0_16, 220.0_16, &
  385.0_16, 220.0_16, 506.0_16, 220.0_16, 506.0_16, 220.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, &
  385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, &
  385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, &
  385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16, 385.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16, &
    0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,   0.0_16,  -1.0_16,  -1.0_16,  -1.0_16,  -1.0_16/

    arr3 = 0.0_16
    arr3 = matmul(arr1(:, 2:8), arr2(4:10, :))
    call assign_result(1, 120, arr3, results)

    arr3 = 0.0_16
    arr3 = matmul(arr1(:, 2:8:2), arr2(4:10:2, :))
    call assign_result(121, 240, arr3, results)

    arr4 = 0.0_16
    arr4(2:11, 3:14) = matmul(arr1(:, 2:8), arr2(4:10, :))
    call assign_result(241, 420, arr4, results)

    arr4 = 0.0_16
    arr4(1:10, 4:15) = matmul(arr1(:, 2:8:2), arr2(4:10:2, :))
    call assign_result(421, 600, arr4, results)

    arr5 = 0.0_16
    arr5(1:19:2, 1:23:2) = matmul(arr1(:, 2:8), arr2(4:10, :))
    call assign_result(601, 1083, arr5, results)

    arr5 = 0.0_16
    arr5(1:19:2, 1:23:2) = matmul(arr1(:, 2:8:2), arr2(4:10:2, :))
    call assign_result(1084,1566,arr5,results)

    arr6 = 0.0_16
    arr6 = matmul(arr1(1:5, :), arr2(:, 5:10))
    call assign_result(1567, 1596, arr6, results)

    arr6 = 0.0_16
    arr6 = matmul(arr1(1:9:2, :), arr2(:, 1:11:2))
    call assign_result(1597, 1626, arr6, results)

    arr7 = 0.0_16
    arr7 = matmul(transpose(arr1(1:9, :)), arr8(2:10, :))
    call assign_result(1627, 1758, arr7, results)

    arr7 = 0.0_16
    arr7 = matmul(transpose(arr1(1:9:2, :)), arr8(2:10:2, :))
    call assign_result(1759, 1890, arr7, results)

    arr4 = 0.0_16
    arr4(2:12, 3:14) = matmul(transpose(arr1(1:9, :)), arr8(2:10, :))
    call assign_result(1891, 2070, arr4, results)

    arr4 = 0.0_16
    arr4(1:11, 4:15) = matmul(transpose(arr1(2:8:2, :)), arr8(4:10:2, :))
    call assign_result(2071, 2250, arr4, results)

    arr5 = 0.0_16
    arr5(1:21:2, 1:23:2) = matmul(transpose(arr1(2:8, :)), arr8(4:10, :))
    call assign_result(2251, 2733, arr5, results)

    arr5 = 0.0_16
    arr5(1:21:2, 1:23:2) = matmul(transpose(arr1(2:8:2, :)), arr8(4:10:2, :))
    call assign_result(2734, 3216, arr5, results)

    arr6 = 0.0_16
    arr6 = matmul(transpose(arr1(:, 1:5)), arr8(:, 5:10))
    call assign_result(3217, 3246, arr6, results)

    arr6 = 0.0_16
    arr6 = matmul(transpose(arr1(:, 1:9:2)), arr8(:, 1:11:2))
    call assign_result(3247, 3276, arr6, results)

    call checkr16(results, expect, 3280)
end program

subroutine assign_result(s_idx, e_idx, arr, rslt)
  integer:: s_idx, e_idx
  REAL*16, dimension(1:e_idx-s_idx+1) :: arr
  REAL*16, dimension(e_idx) :: rslt

  rslt(s_idx:e_idx) = arr

end subroutine

